提供一个nestjs docker服务器自动编译部署 简单解决方案
目前根据皓哥的视频,写了个nestjs的后端,并部署到阿里云了。发现每次本地修改code,推送后,都要上服务器手动pull,并更新docker很麻烦,后面去查解决方案,发现主要有git hook 和 GitHub webhook 两种方案, 理解原理后,我想能不能向服务器提交请求后自动执行脚本,结果发现是可行的。这样不涉及任何github的设置,只需要加几行code就行了, 实现步骤如下:
1. 配置脚本
在项目目录下建一个脚本,例如:deploy.sh, 输入以下代码:
12月20日更新
向github提交的时候发现服务器自动部署没成功,调用deploy.sh的时候文件路径在根目录下,需要添加一行cd directory, 更改文件路径到存放代码的路径下
2.使用 Githook
git仓库和git裸仓库的钩子所在位置不同。
- git普通仓库钩子在.git/hooks/中
- git裸仓库钩子在hooks/中
新建一个 post_service 文件,并设置权限。然后把上方的脚本文件内容复制到 post_service 文件里就可以实现自动监听 git push 操作,然后更新仓库和 docker 了。
3. 之前的方法:建立一个depoly接口(不安全且每次都要手动发送请求)已弃用
controller:
service:
Done!
就是这么简单,每次本地修改完code,git push。然后静静等几分钟,docker就自动更新完成了😁。
(p.s 继续改进,没有想到如何查询目前更新的进度,因为docker 更新通常要几分钟。使用接口倒是可以查看日志,只使用 githook + 脚本的无法将进度返回给本地)
参考链接:搭建Git服务器并感受hook使用